package com.richpay.basejava.base07;

/**
* 一个类如果没有显示定义构造方法，则编译器会自动帮助我们生成一个无参构造方法，如：
*	类名(){}
* 查看方式：1.javac 文件名.java
*		  2.javap 类名
*
*  如 javap Worker
*	Compiled from "Worker.java"
*	public class Worker {
* 	  public Worker();
*	}
*/
public class Worker {
	private String name;
	private int age;
	private String addr;
/*
*	无参构造方法
*	
*	构造方法的调用方式:在用户实例化对象时编译器自动调用，用户无法手工调用构造方法。
*	构造方法的特征：
*		A:方法名和类名相同。
*		B:方法没有返回值，即使void也不行。
*
*	构造方法的使命:完成成员变量的初始化。
*	
*	如果用户没有提供有参构造，编译器会帮助我们自动生成无参构造方法，
*	一旦用户提供了有参构造方法，则编译器不会再帮助我们生成无参构造方法了。
*	如果此时还要使用无参构造方法，则需要显示提供无参构造方法。
*
*
*/

	{
	
		System.out.println("=====构造代码块一=====");
	}

public Worker(){
name="无名";
age=1;
addr="地址不详";
System.out.println("===Worker()===");
}

	{
		System.out.println("=====构造代码块二=====");
	}

// 一个带有String数据类型的构造方法
public Worker(String n){
name=n;
System.out.println("===Worker(String n="+n+")===");
}

public Worker(String n,int ag,String ad){
name=n;
age=ag;
addr=ad;
}

/*	一旦构造方法加上了返回值，那么构造方法就不再是构造方法了，就退化了普通方法。
*	
*	证明方式:在实例化对象时不会调用带返回值的类似构造方法了。
*	
*	类似的构造方法可以使用调用普通方法的方式调用，如:对象名.方法名();
*
*/

public void Worker(){

System.out.println("===void Worker()===");

}
// 打印成员变量的值
public void display(){
	//局部代码块 调用顺序是按照顺序调用。
	{
		System.out.println("=====局部代码块一=====");
		String qq="1234";
		System.out.println("qq="+qq);
	}
	//System.out.println("qq="+qq);
	System.out.println("name="+name+",age="+age+",addr="+addr);

}

}
